1. Field of the Invention
The present invention generally relates to event notifying methods, devices and processor systems, and more particularly to an event notifying method for notifying a large number of events to a processor, a device which employs such an event notifying method, and a processor system which employs such an event notifying method.
2. Description of the Related Art
The existence of an event generated in a device within a processor system (computer system) is notified by a polling technique or the like, by an interrupt or a program that operates in the processor. The processor that is notified of the existence of the event acquires information related to the event by making an access such as read and write with respect to a register of the device, and executes a process corresponding to the generated event by an event handler. When a large number of events are generated, an oppression of a bus band associated with the acquisition of the information related to the events and a start overhead of the event handler become problems.
For example, a Japanese Laid-Open Patent Application No. 9-204311 proposes a first method of overcoming the above described problems, by preparing a shared memory that is shared by the device and the processor, and transferring the plurality of event information in one operation via the shared memory. However, the Japanese Laid-Open Patent Application No. 9-204311 does not mention a resource management of the shared memory.
In addition, in order to efficiently process a plurality of events by temporarily storing the event information in a storage unit such as the shared memory, it is necessary to cope with the problems associated with a cold input/output (I/O) where the event is not processed and abandoned for a long time and a hot input/output (I/O) where the interrupt is generated in excess.
For example, a Japanese Laid-Open Patent Application No. 7-262022 proposes a second method that temporarily stores the interrupts from the device by modifying an interrupt processing part of an Operating System (OS). This second method is additionally provided with a function (cold I/O countermeasure) of generating a software interrupt when there is an event that has not been processed for a predetermined time or longer, and a function (hot I/O countermeasure) of generating a software interrupt when the number of temporarily stored interrupts becomes a predetermined number or greater.
In order to overcome the problems of the oppression of the bus band associated with the acquisition of the event information and the start overhead of the event handler in the processor system having the device in which a large number of events are generated, it is effective to employ the first method which transfers the event information in one operation via the shared memory that is shared by the device and the processor. However, there is a problem in that the resource management of the shared memory must be carried out as a measure against overflow.
In order to efficiently notify the events, it is effective to employ the second method which modifies the interrupt processing part of the OS. However, there are problems in that an expensive operation is required to modify the OS and that the modification must be made for each OS.
On the other hand, if the process is concentrated in a specific processor of a multi-processor system, there is a problem in that the performance of the entire multi-processing system deteriorates. In other words, when the event handler is started in only the specific processor, the other processors cannot start their processes and must wait until the process of the event handler of the specific processor is completed. Accordingly, there are demands to realize a mechanism that would enable the event handler to be started in the other processors even when the event handler of the specific processor is started.
Among the events generated in the device, there is an event that cannot be notified via a queue. For example, an event that is generated in a state where the queue itself is unusable, cannot be notified via the queue. In addition, there is an event that does not need to be notified via the queue. An event that does not leave behind an effect because an error correction is carried out within the device, is one example of such an event that does not need to be notified via the queue. In the conventional system, the generation of these events are stored in a register of the device, however, there is a problem in that there is no means of knowing the times when these events were generated.